/*
 * @Copyright (C), 2021 - 2030, ShenZhen Benew Technology Co.,Ltd.
 * @author: tangbing
 * @date: 2/2/21 3:20 PM
 * @describe:
 */
package com.benew.ntt.evaluate.sdk


interface IEvalSDKListener {

    /**
     *
     * 初始化完成
     */
    fun onReady() {

    }

    /**
     * 开始评测
     *
     * @param evalSDKEntity 评测数据
     */
    fun onStartEval(evalSDKEntity: EvalSDKEntity) {

    }

    /**
     * 开始录音
     */
    fun onStartRecord() {

    }

    /**
     * 评测异常
     * 当结果没出来出现的各种异常，
     * 做过处理，当onEvalResult回调之后，该onError不会被调用，因为onEvalResult回调之后没必要回调onError,直接显示结果就行
     *
     * @param errorMsg 异常信息
     */
    fun onError(errorMsg: String?, code: Int) {

    }

    /**
     * 评测过程
     *
     * @param msg 评测信息
     */
    fun onProgress(msg: String?) {

    }

    /**
     * 录音实时数据
     * @param data 数据
     * @param begin 开始位置
     * @param end 结束位置
     * @param decibel 分贝
     */
    fun recordOfByte(data: ByteArray?, begin: Int, end: Int, decibel: Double) {

    }

    /**
     * 录音文件生成
     *
     * @param filePath 录音文件路径
     */
    fun onRecordFile(filePath: String?) {

    }

    /**
     * 评测结果
     *
     * @param result        结果，当socket关闭了，但是评测最终结果还没返回，result有可能是"",
     * @param evalSDKEntity 传进来的entity,
     */
    fun onEvalResult(result: String?, evalSDKEntity: EvalSDKEntity?) {

    }

    /**
     * 评测超时
     * 在7秒内没有收到服务器的消息
     */
    fun onTimeOut() {

    }

    /**
     * 调用了取消评测
     */
    fun onCancel() {

    }
}